package actions;

import java.rmi.RemoteException;
import java.util.Collection;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import metier.client.MetierFactory;
import metier.interfaces.IRemoteProduit;
import metier.server.MetierProduits;

import donnees.Produit;

public class ActionProduits implements IAction {

	@Override
	public String execute(HttpServletRequest req) throws Exception {

		// récupération de l'objet métier distant
		IRemoteProduit metierProduit = (IRemoteProduit) MetierFactory
				.getInstance().getMetier("Produits");

				
		/* ajout d'un produit au panier */
		Integer produit = -1;
		try {
			if (req.getParameter("ajout") != null) {
				produit = Integer.parseInt(req.getParameter("ajout"));
			}
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}

		if (produit >= 0) {
			// ajout d'un produit : mémorisation en session de l'id du produit
			// et de la quantité (+1)
			HttpSession session = req.getSession();
			HashMap<Integer, Integer> panier;
			if (session.getAttribute("panier") == null) {
				panier = new HashMap<Integer, Integer>();
			}
			else {
				panier = (HashMap<Integer, Integer>) session.getAttribute("panier");
			}
			
			if (panier.containsKey(produit)) {
				panier.put(produit, new Integer((panier.get(produit) + 1)));
			} else {
				panier.put(produit, new Integer(1));
			}

			session.setAttribute("panier", panier);
		}

		/* récupération de la liste des produits */

		// appel metier recupérer liste produits
		Collection<Produit> lesProduits = null;
		try {
			if (metierProduit != null) {
				lesProduits = metierProduit.getLesProduits();
			}
			else {
				throw new Exception("Impossible d'acceder au serveur metier");
			}
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		req.setAttribute("produits", lesProduits);

		return "produits.jsp";
	}
}
